package com.biblioteca.persistencia;

import java.io.Serializable;
import javax.persistence.*;
import com.google.appengine.api.datastore.Key;
import java.util.ArrayList;
import java.util.List;

@Entity
public class Usuario implements Serializable {

    @Id
    private String username;
    @Column(nullable = false)
    private String password;
    @Basic
    List<Key> roles = new ArrayList<Key>();
    @Basic
    private String nombre;
    @Basic
    private String apellidos;
    @Basic
    private String correo;
    @Basic
    private Boolean siadmin;  
    @Basic
    private List<Key> votos = new ArrayList<Key>();
    @Basic
    private boolean bloqueado;
    @Basic
    private int intentos;

    public Usuario(String username, String password, String nombre, String apellidos, String correo) {
        this.username = username;
        this.password = password;
        this.nombre = nombre;
        this.apellidos = apellidos;
        this.correo = correo;
        this.bloqueado = false;
        this.intentos=0;
    }

    public Usuario() {

    }

    public int getIntentos() {
        return intentos;
    }

    public void setIntentos(int intentos) {
        this.intentos = intentos;
    }

    

    public String getApellidos() {
        return apellidos;
    }

    public String getCorreo() {
        return correo;
    }

    public String getNombre() {
        return nombre;
    }

    public void setApellidos(String apellidos) {
        this.apellidos = apellidos;
    }

    public void setCorreo(String correo) {
        this.correo = correo;
    }

    public void setNombre(String nombre) {
        this.nombre = nombre;
    }

    public Boolean getSiadmin() {
        return siadmin;
    }

    public void setSiadmin(Boolean siadmin) {
        this.siadmin = siadmin;
    }

    public String getPassword() {
        return password;
    }

    public void setPassword(String password) {
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    public List<Key> getRoles() {
        return roles;
    }

    public void setRoles(List<Key> roles) {
        this.roles = roles;
    }

    public List<Key> getVotos() {
        return votos;
    }

    public void setVotos(List<Key> votos) {
        this.votos = votos;
    }

    public boolean isBloqueado() {
        return bloqueado;
    }

    public void setBloqueado(boolean bloqueado) {
        this.bloqueado = bloqueado;
    }

    
    
    @Override
    public boolean equals(Object o) {
        Usuario usuario = (Usuario) o;
        return super.equals(username.equals(usuario.getUsername()));
    }

    @Override
    public int hashCode() {
        int hash = 3;
        hash = 23 * hash + (this.username != null ? this.username.hashCode() : 0);
        return hash;
    }

    @Override
    public String toString() {
        return "Usuario{" + "username=" + username + '}';
    }
    
}
